﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Capa_Entidad;
using Capa_Negocio_Facade;
using Capa_Negocio_Interface;
using System.Collections;

public partial class Ventas_wfCama : System.Web.UI.Page
{
    private static IFacadeRegistrarCama InterfaceRegistrarCama;
    private static HOS_CAMA objHos_Cama = null;
    private static List<V_Hos_Cama> listaCama = null;
    private static List<HOS_TIPO_CAMA> listaTipoCama = null;
    private static List<HOS_ESTADO_CAMA> listaEstadoCama = null;
    private static List<HOS_TIPO_CONDICION_OCUPACION> listaTipoCondicionOcupacion = null;

    private static String msg, titulo, vOperacion = "C";

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                listarTipoCama();
                listarEstadoCama();
                listarTipoCondicionOcupacion(); 
                vOperacion = (Session["vOperacion"] != null) ? (String)Session["vOperacion"] : vOperacion;
                if (vOperacion == "M")
                {
                    CargarCama();
                }
                
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LA PAGINA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void listarTipoCama()
    {
        try
        {
            listaTipoCama = new List<HOS_TIPO_CAMA>();
            InterfaceRegistrarCama = new FacadeRegistrarCama();
            listaTipoCama = InterfaceRegistrarCama.listarTipoCama();
            cboTipoCama.DataSource = listaTipoCama;
            cboTipoCama.ValueField = "TIC_ID_TIPO";
            cboTipoCama.TextField = "TIC_DESCRIPCION";
            cboTipoCama.DataBind();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LOS TIPOS DE CAMA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void listarEstadoCama()
    {
        try
        {
            listaEstadoCama = new List<HOS_ESTADO_CAMA>();
            InterfaceRegistrarCama = new FacadeRegistrarCama();
            listaEstadoCama = InterfaceRegistrarCama.listarEstadoCama();
            cboEstadoCama.DataSource = listaEstadoCama;
            cboEstadoCama.ValueField = "ESC_ID_ESTADO";
            cboEstadoCama.TextField = "ESC_DESCRIPCION";
            cboEstadoCama.DataBind();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LOS ESTADOS DE LA CAMA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void listarTipoCondicionOcupacion()
    {
        try
        {
            listaTipoCondicionOcupacion = new List<HOS_TIPO_CONDICION_OCUPACION>();
            InterfaceRegistrarCama = new FacadeRegistrarCama();
            listaTipoCondicionOcupacion = InterfaceRegistrarCama.listarTipoCondicionOcupacion();
            cboTipoServicio.DataSource = listaTipoCondicionOcupacion;
            cboTipoServicio.ValueField = "TCO_ID_TIPO";
            cboTipoServicio.TextField = "TCO_DESCRIPCION";
            cboTipoServicio.DataBind();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LOS TIPOS CONDICION DE OCUPACION";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void CargarCama()
    {
        try
        {
            int? idcama = Convert.ToInt32(Session["idCama"]);
            listaCama = new List<V_Hos_Cama>();
            InterfaceRegistrarCama = new FacadeRegistrarCama();
            listaCama = InterfaceRegistrarCama.listarCama(Convert.ToInt32(idcama));

            if (listaCama == null)
            {
                msg = "No Existen Datos Para La Cama Seleccionada.";
                Redirecionar(msg, false);
                return;
            }

            String codCama;
            int? idTipoServicio, idTipoCama, idServicioProp, idUbicActual, idestado;
            
            codCama = listaCama[0].CAM_CODIGO;
            idTipoServicio = listaCama[0].TCO_ID_TIPO_CONDICION_OCUPACION;
            idTipoCama = listaCama[0].TIC_ID_TIPO_CAMA;
            idServicioProp = listaCama[0].SER_ID_SERVICIO_PROPIETARIO;
            idUbicActual = listaCama[0].SER_ID_SERVICION_UBICACION_ACTUAL;
            idestado = listaCama[0].ESC_ID_ESTADO_CAMA;

            txtCodCama.Text = codCama;
            cboTipoServicio.Value = idTipoServicio.ToString();
            cboTipoCama.Value = idTipoCama.ToString();
            cboServicioPropietario.Value = idServicioProp.ToString();
            cboUbicActual.Value = idUbicActual.ToString();
            cboEstadoCama.Value = idestado.ToString();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LOS DATOS DE LA CAMA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    protected void Aceptar(object sender, EventArgs e)
    {
        GrabarCama();
        //Response.Redirect("wfCamaListado.aspx", true);
    }

    protected void Cancelar(object sender, EventArgs e)
    {
        try
        {
            Session["vOperacion"] = "C";
            Response.Redirect("wfCamaListado.aspx", false);
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL REDIRECCIONAR AL LISTADO";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void GrabarCama()
    {
        try
        {
            if (ValidarCampos() == false)
            {
                return;
            }

            objHos_Cama = new HOS_CAMA();
            InterfaceRegistrarCama = new FacadeRegistrarCama();
            int idcama = 0;

            int idTipoServicio, idTipoCama, idServicioProp, idUbicActual, idestado;
            String codCama;

            idcama = (vOperacion == "C") ? InterfaceRegistrarCama.TraerUltimoIDCama() : Convert.ToInt32(Session["idCama"].ToString());
            codCama = txtCodCama.Text.Trim();
            idTipoServicio = Convert.ToInt32(cboTipoServicio.SelectedItem.Value);
            idTipoCama = Convert.ToInt32(cboTipoCama.SelectedItem.Value);
            idServicioProp = Convert.ToInt32(cboServicioPropietario.SelectedItem.Value);
            idUbicActual = Convert.ToInt32(cboUbicActual.SelectedItem.Value);
            idestado = Convert.ToInt32(cboEstadoCama.SelectedItem.Value);

            objHos_Cama.CAM_ID_CAMA = idcama;
            objHos_Cama.CAM_CODIGO = codCama;
            objHos_Cama.SER_ID_SERVICIO_PROPIETARIO = idServicioProp;
            objHos_Cama.SER_ID_SERVICION_UBICACION_ACTUAL = idUbicActual;
            objHos_Cama.TIC_ID_TIPO_CAMA = idTipoCama;
            objHos_Cama.TCO_ID_TIPO_CONDICION_OCUPACION = idTipoServicio;
            objHos_Cama.ESC_ID_ESTADO_CAMA = idestado;

            Boolean ok = (vOperacion == "C") ? InterfaceRegistrarCama.InsertarCama(objHos_Cama) : InterfaceRegistrarCama.ModificarCama(objHos_Cama);

            if (vOperacion == "C")
            {
                msg = (ok) ? "Se Grabo La Cama Correctamente" : "Hubo Un Error Al Grabar La Cama";
            }
            else if (vOperacion == "M")
            {
                msg = (ok) ? "Se Actualizo La Cama Correctamente" : "Hubo Un Error Al Actualizar La Cama";
            }

            if (ok == false)
            {
                titulo = "Mensaje";
                MostrarComentario(msg, titulo);
            }
            else
            {
                Redirecionar(msg, ok);
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL GRABAR LA CAMA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private Boolean ValidarCampos()
    {
        Boolean ok = true;
        if (txtCodCama.Text.Trim() == "")
        {
            msg = "Debe Ingresar El Codigo de La Cama";
            ok = false;
        }
        else if (cboTipoServicio.Value == null)
        {
            msg = "Debe Seleccionar Un Tipo de Servicio";
            ok = false;
        }
        else if (cboTipoCama.Value == null)
        {
            msg = "Debe Seleccionar Una Tipo de Cama";
            ok = false;
        }
        else if (cboServicioPropietario.Value == null)
        {
            msg = "Debe Seleccionar Un Servicio Propietario";
            ok = false;
        }
        else if (cboUbicActual.Value == null)
        {
            msg = "Debe Seleccionar una Ubicacion Actual";
            ok = false;
        }
        else if (cboEstadoCama.Value == null)
        {
            msg = "Debe Seleccionar Un Estado Para La Cama";
            ok = false;
        }
        if (ok == false)
        {
            titulo = "Mensaje";
            MostrarComentario(msg, titulo);
        }
        return ok;
    }

    private void MostrarComentario(String msg, String titulo)
    {
        pcMensaje.HeaderText = titulo;
        lblMensaje.Text = msg;
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }

    private void Redirecionar(String msg, Boolean ok)
    {
        Session["msg"] = msg;
        Session["Grabacion"] = ok;
        Response.Redirect("wfCamaListado.aspx", false);
    }

}